This invention relates generally to techniques that facilitate sharing of resources in computer networks. More particularly, the invention relates to a distributed computing environment in which multiple computer resources are physically distributed and are interconnected through a network, or multiple networks. Further, the resources are accessed by multiple application "clients," which are also, in general, distributed through the network.
Computer networks continue to grow in both size and complexity. The principal reason for connecting computers to networks, and connecting networks to other networks, is to enable computers to work together efficiently, and to simplify sharing of resources. Shared resources include files, applications (in the form of computer software), printers, and special computers.
Examples of distributed applications include an electronic conferencing service, a distributed printing service, and a distributed calendar management service. Each of these applications maintains a set of resources. In a typical distributed computing environment, entities known as "servers" manage access to the shared resources, and entities known as "clients" seek access to the resources. For example, the resources of an electronic conferencing service are the individual conferences, or "bulletin boards," that users access. The resources of a distributed printing service are the actual printers. The resources of a distributed calendar management service are the individual calendar databases.
Users of applications frequently seek access to specific resources rather than to application resources at large. For example, a user of an application that prints will typically seek access to a specific printer rather than to any printer. Similarly, a user will commonly want to access a specific conference in a distributed conferencing application, and to a specific database in a distributed calendar management application. In large networks, there can be a potentially large number of application servers for each service, and a correspondingly even larger number of application resources distributed among these servers. Therefore, client applications require a consistent means for locating application resources on behalf of users. Unfortunately, there has been no consistency or uniformity in the naming and location of application servers and resources.
In the past, the location of a distributed application resource had to be fully specified by the user each time the resource was accessed. For example, a user seeking network access to a remote file would have to specify a host system name or address where the file was located, and a complete "path" between the user and the file server managing access to the file. Some distributed applications have tried to improve on this approach by providing location information that is specific to a particular application. For example, a user need then only specify an application-specific "alias" to refer to a remote file. The alias name would be translated by the application client system into the required file name and location information, relieving the user of the burden of having to remember all the specifics of addressing required to access each resource. However, the use of aliases is difficult to manage because every time a new resource is created, or the location of an existing resource is changed, this information has to be communicated in some way to every client system, for updating translation tables.
Distributed name services have been developed to help with the problem of accessing remote services. These services provide network-wide access to a common database, in which location information can be stored, and shared by all clients. Unfortunately, these directory services simply provide a repository for information, and do not prescribe how applications should use the repository. Each application devises its own mechanism for utilizing the "namespace" that defines the names and locations of servers and resources in such a way that clients can locate them as needed. Creating these mechanisms complicates the design and implementation of distributed applications, and also complicates the management of the distributed environment, since there may be a large number of different, and potentially conflicting, uses of the distributed namespace.
Many of the difficulties of distributed computing, including the difficulty of locating shared resources, have been addressed by a software system known as Distributed Computing Environment (DCE), promulgated by the Open Software Foundation (OSF). The scope, objectives, and function of DCE are concisely explained in a book entitled "Understanding DCE," by Ward Rosenberry et al., published in 1992 by O'Reilly & Associates, Sebastopol, Calif. 95472.
DCE provides a distributed directory service consisting of a shared repository having an associated hierarchical namespace. The DCE standard provides a minimal structure to the namespace for the purpose of distinguishing the addresses of, and management information associated with, multiple hosts in the network. It also provides primitive operations for creating and managing individual elements in the namespace, such as directories, server entries and several types of group entries. However, it does not provide any additional structure that would aid in the common management of application services, servers or resources.
In short, although DCE provides a hierarchical structure for naming and locating "objects" that contain information about servers, it provides no guidance as to how the structure might be used to avoid potential conflict between names, or to simplify resource sharing from a user standpoint. The present invention is directed to these ends.